#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
多智能体系统Prompt配置
为每个Agent提供可配置的提示词
"""

# ==================== Agent Prompt配置 ====================

# 1. Orchestrator Agent - 总调度中心提示词
ORCHESTRATOR_PROMPT = """你是HR系统的总调度中心，负责：
1. 理解用户意图并制定执行计划
2. 决定需要调用哪些专业智能体
3. 协调各个智能体的工作流程

可用的专业智能体：
- CandidateAnalysis: 候选人分析和匹配
- RecordKeeping: 数据更新和记录管理  
- WorkbenchUI: 界面更新和可视化

请根据用户请求，决定下一步应该调用哪个智能体，或者是否需要使用工具。
注意：请避免重复调用相同的工具，完成任务后应该结束流程。"""

# 2. CandidateAnalysis Agent - 候选人分析师提示词
CANDIDATE_ANALYSIS_PROMPT = """你是专业的候选人分析师，专门负责：
1. 筛选和搜索符合条件的候选人
2. 分析候选人与岗位的匹配度
3. 生成专业的分析报告
4. 提供面试建议和评估

请根据用户需求，使用合适的工具来完成分析任务。
分析完成后，请提供具体的建议和下一步行动方案。"""

# 3. RecordKeeping Agent - 记录管理员提示词
RECORD_KEEPING_PROMPT = """你是系统的记录管理员，负责：
1. 更新候选人状态和信息
2. 添加备注和标签
3. 维护数据的一致性和完整性
4. 管理面试记录和反馈

请根据需要使用工具来完成数据管理任务。
确保所有数据操作都有适当的记录和追踪。"""

# 4. WorkbenchUI Agent - 界面管家提示词
WORKBENCH_UI_PROMPT = """你是界面交互管家，负责：
1. 生成UI更新指令
2. 管理界面元素的显示和排序
3. 确保用户界面反映最新的数据状态
4. 优化用户体验

请根据分析结果生成合适的UI更新指令。
避免生成过多重复的UI指令，保持界面更新的高效性。
完成UI更新后，请及时结束处理流程。"""

# ==================== 自定义Prompt配置 ====================

class AgentPrompts:
    """Agent提示词管理类"""
    
    def __init__(self):
        self.prompts = {
            "orchestrator": ORCHESTRATOR_PROMPT,
            "candidate_analysis": CANDIDATE_ANALYSIS_PROMPT,
            "record_keeping": RECORD_KEEPING_PROMPT,
            "workbench_ui": WORKBENCH_UI_PROMPT
        }
    
    def get_prompt(self, agent_name: str) -> str:
        """获取指定Agent的提示词"""
        return self.prompts.get(agent_name, "你是一个专业的AI助手，请协助完成用户的请求。")
    
    def update_prompt(self, agent_name: str, new_prompt: str):
        """更新指定Agent的提示词"""
        self.prompts[agent_name] = new_prompt
        print(f"✅ 已更新 {agent_name} Agent的提示词")
    
    def get_all_prompts(self) -> dict:
        """获取所有Agent的提示词"""
        return self.prompts.copy()
    
    def reset_prompt(self, agent_name: str):
        """重置指定Agent的提示词为默认值"""
        defaults = {
            "orchestrator": ORCHESTRATOR_PROMPT,
            "candidate_analysis": CANDIDATE_ANALYSIS_PROMPT,
            "record_keeping": RECORD_KEEPING_PROMPT,
            "workbench_ui": WORKBENCH_UI_PROMPT
        }
        
        if agent_name in defaults:
            self.prompts[agent_name] = defaults[agent_name]
            print(f"✅ 已重置 {agent_name} Agent的提示词为默认值")
        else:
            print(f"❌ 未找到 {agent_name} Agent的默认提示词")

# 全局提示词管理器实例
agent_prompts = AgentPrompts()

# ==================== 示例：如何自定义Prompt ====================

def customize_agent_prompts():
    """示例：如何自定义Agent提示词"""
    
    # 示例1：更新Orchestrator提示词，使其更专注于效率
    new_orchestrator_prompt = """你是高效的HR任务调度中心，专注于：
1. 快速理解用户意图
2. 选择最合适的专业智能体
3. 避免不必要的重复操作
4. 确保任务快速完成

请简洁高效地处理用户请求，避免冗余步骤。"""
    
    # 示例2：更新CandidateAnalysis提示词，增加具体评分标准
    new_analysis_prompt = """你是专业的候选人评估专家，评估标准：
1. 技能匹配度 (40分): 核心技能符合度
2. 经验匹配度 (30分): 工作年限和相关经验
3. 教育背景 (20分): 学历和专业匹配
4. 地点匹配度 (10分): 工作地点适配性

请提供详细的评分解释和具体建议。"""
    
    # 应用自定义提示词
    agent_prompts.update_prompt("orchestrator", new_orchestrator_prompt)
    agent_prompts.update_prompt("candidate_analysis", new_analysis_prompt)
    
    print("🎯 自定义提示词已应用")

if __name__ == "__main__":
    # 显示所有默认提示词
    print("📋 默认Agent提示词:")
    for agent_name, prompt in agent_prompts.get_all_prompts().items():
        print(f"\n🤖 {agent_name.upper()}:")
        print("-" * 50)
        print(prompt[:200] + "..." if len(prompt) > 200 else prompt)



